﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Remoting.Messaging;

namespace NMoq.Core
{
    /// <summary>
    /// An interface to intercept the call of proxied object
    /// </summary>
    public interface IInterceptor : IAction
    {
        event EventHandler<InterceptEventArgs> PreIntercept;
        event EventHandler<InterceptEventArgs> AftIntercept;
        event EventHandler<InterceptEventArgs> AftInvoked;

        void Intercept(IInvocation invocation,IDataProvider dataProvider);
        void OnAftInvoked(IInvocation invocation, IDataProvider dataProvider);
    }


}
